/*
 * msg.c
 *
 *  Created on: Nov 19, 2010
 *      Author: marco
 */

/*Comune a server e client*/
#include "msg.h"
#include "comsock.h"

/**
 *
 * @param t
 * @param payload
 * @param mpr
 * @param dim
 * @return
 */
int newMessage(char t, char *payload, message_t* m, int dim){

	m->type = t;
	if (payload == NULL){
		m->length = 0;
		return 0;
	}

	m->buffer = payload;
	m->length = dim;

	return m->length;
}

void deleteMessage(message_t *m) {
	if(!m)
		return;
	if(!m->buffer){
		free(m->buffer);
	}
	free(m);

	return;
}

/**
 * Funzione che "estra" dal campo buffer del messaggio il nome utente e il messaggio vero e
 * proprio. Non alloca nessun buffer, copia i puntatori dentro la struct msg_buffer
 * @param m
 * @param b
 */
void extract(message_t *m, msg_buffer *b){
	b->name = (char*)m->buffer;
	b->msg = (char*)(b->name + strlen(b->name)+1);
	b->dim = m->length;
}

